package com.cskaoyan._11polymorphic._01introduction;

/**
 * @description:
 * @author: 景天
 * @date: 2023/2/10 14:35
 **/
/*
多态:
    字面意思,同一事物在不同情况下所表现出来的不同的状态
    说明:
        同一事物:同一父类引用
        不同情况:不同的子类对象
        不同状态:调用同名方法时,实现不同.表现出不同的行为
练习:
定义一个父类Phone, 3个子类Huawei, XiaoMi, Iphone去模拟多态场景.

 总结来说，Java中的多态指的是，同一个父类引用指向不同子类对象时，
 调用同名成员方法，根据指向实际对象的不同，得到的行为也会随之不不同。

 能够发生多态的条件?
 1.继承
 2.子类要重写父类的方法
 3.存在父类引用指向子类的对象

 不能发生多态的场景?
 1.final修饰的类不能继承
 2.不允许方法重写
    final修饰的方法
    static方法
    private方法
 3.代码中没有体现父类引用指向子类的对象
 */
public class Demo {
    public static void main(String[] args) {
        Phone phone;
        phone = new Huawei();
        phone.call();

        phone = new Xiaomi();
        phone.call();

        phone = new Iphone();
        phone.call();
    }
}

class Phone{
    public void call() {
        System.out.println("手机响了");
    }
}
class Huawei extends Phone{

    @Override
    public void call() {
        System.out.println("小易小易,今天天气怎么样");
    }
}
class Xiaomi extends Phone{

    @Override
    public void call() {
        System.out.println("小爱同学,今天股市行情怎么样");
    }
}
class Iphone extends Phone{

    @Override
    public void call() {
        System.out.println("嘿,siri,我今天帅吗?");
    }
}